package com.atguigu.product.config;

import feign.Logger;
import feign.Retryer;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

@Configuration
public class ProductConfig {

//    @LoadBalanced
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

    @Bean
    Logger.Level feignLoggerLevel() {
        return Logger.Level.FULL;
    }

    /*
     * 重试策略：
     * this(100L, TimeUnit.SECONDS.toMillis(1L), 5);
     * 第一个参数：初始重试间隔时间，单位毫秒
     * 第二个参数：最大重试间隔时间，单位毫秒
     * 第三个参数：最大重试次数
     * 效果：
     * 第一次请求失败
     * 等待100毫秒后重试，第二次
     * 等待100 * 1.5，第三次
     * 等待100 * 1.5 * 1.5，第四次
     * 等待100 * 1.5 * 1.5 * 1.5，第五次
     * 注意：如果超过了1s，那就等待1s重试
     */
    @Bean
    Retryer retryer(){
        return new Retryer.Default();
    }
}
